// 音频工具类
const innerAudioContext = wx.createInnerAudioContext();
// 正在播放
const playing = "1";
// 正在停止
const stopping = "0";

// 按钮的状态数据
var btnStatusData = [];

// 初始化音频按钮 所有按钮都置为停止状态
function initAudioBtn(len1, len2) {
  innerAudioContext.obeyMuteSwitch = false;
  btnStatusData[0] = new Array(len1);
  btnStatusData[0].fill(stopping);
  btnStatusData[1] = new Array(len2);
  btnStatusData[1].fill(stopping);
  return btnStatusData;
}

// 播放
function play(options) {
  if ((options.type == undefined || options.index == undefined) && options.audiosrc != undefined) {
    // 如果不知道点击的那个，但是有声音的路径，就直接播放
    setAllBtnStatusStop();
    innerAudioContext.src = options.audiosrc;
    innerAudioContext.play();
    typeof options.callback == 'function' && options.callback(btnStatusData);
    return;
  }

  if (playing == btnStatusData[options.type][options.index]) {
    // 当前点击的句子正在播放
    innerAudioContext.stop();
    setAllBtnStatusStop();
    typeof options.callback == 'function' && options.callback(btnStatusData);
    return;
  }
  // 当前点击的句子和正在播放的不是同一个
  setAllBtnStatusStop();
  btnStatusData[options.type][options.index] = playing;
  innerAudioContext.src = options.audiosrc;
  innerAudioContext.play();
  typeof options.callback == 'function' && options.callback(btnStatusData);
}

//   停止播放
function stop(options) {
  innerAudioContext.stop();
  setAllBtnStatusStop();
  typeof options.callback == 'function' && options.callback(btnStatusData);
}

// 销毁实例
function destory() {
  innerAudioContext.stop();
  // innerAudioContext.destroy();
  setAllBtnStatusStop();
}

// 监听音频自然播放至结束的事件
function onEnded(options) {
  innerAudioContext.onEnded(function() {
    setAllBtnStatusStop();
    typeof options.callback == 'function' && options.callback(btnStatusData);
  });
}

// 停止播放
function onStop(options) {
  innerAudioContext.onStop(function() {
    setAllBtnStatusStop();
    typeof options.callback == 'function' && options.callback(btnStatusData);
  });
}

// 设置所有的语音为停止状态
function setAllBtnStatusStop() {
  for (let i = 0; i < btnStatusData.length; i++) {
    btnStatusData[i].fill(stopping);
  }
}

module.exports = {
  initAudioBtn: initAudioBtn,
  play: play,
  onEnded: onEnded,
  onStop: onStop,
  destory: destory,
  stop: stop
}